home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1997-10-26 | 26.0 KB | 600 lines |
- (*----------------------------------------------------------------------*
- * *
- * MAGICTOOLS Modula's All purpose GEM Interface Cadre Toolbox *
- * ÿ ÿ ÿ ÿ ÿ *
- *----------------------------------------------------------------------*
- * Version 3.30 02.02.1992 (C)90/91/92 by Peter Hellinger Software *
- *----------------------------------------------------------------------*
- * Dieses Modul ist urheberrechtlich geschtzt. *
- * *
- * Die Verffentlichung des Quelltextes oder Teilen daraus, sowie die *
- * Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
- * oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail- *
- * boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen *
- * Einverstndnisserklrung des Autors. *
- * *
- * Die Verbreitung des Moduls als Teil eines gelinkten Programms ist *
- * fr Lizenznehmer ausdrcklich erlaubt! Der Autor behlt sich das *
- * Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
- * widerrufen. *
- *----------------------------------------------------------------------*)
-
- IMPLEMENTATION MODULE mtFontselector;
-
- (*----------------------------------------------------------------------*
- * Int. Vers | Datum | Name | nderung *
- *-----------+----------+------+----------------------------------------*
- * 3.00 | 18.01.92 | Hp | *
- *-----------+----------+------+----------------------------------------*)
-
-
-
- (* IMPLEMENTATION FR >>> Megamax-Modula-2 <<< *)
- (* *)
- (*$R- Range-Checks *)
- (*$S- Stack-Check *)
- (* *)
- (*----------------------------------------------*)
-
-
- FROM Storage IMPORT ALLOCATE, DEALLOCATE;
-
-
-
-
- FROM MagicSys IMPORT Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
- Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
- Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
- sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET,
- CastToChar, CastToByte, CastToByteset, CastToInt,
- CastToCard, CastToBitset, CastToWord, CastToLInt,
- CastToLCard, CastToLBitset, CastToLWord, CastToAddr,
- TosVersion, Accessory, Basepage, SysHeader, TosDate;
-
-
-
-
-
-
- FROM SYSTEM IMPORT ADDRESS, ADR, CADR, BYTE, TSIZE;
-
-
-
- FROM MagicStrings IMPORT Append, Assign, Length;
- FROM MagicConvert IMPORT IntToStr, StrToInt;
- FROM mtAppl IMPORT CharHeight, CharWidth, BoxWidth, BoxHeight,
- MaxHeight, MaxWidth;
- FROM MagicAES IMPORT SELECTED, OUTLINED, TOUCHEXIT, HIDETREE,
- SELECTABLE, Exit, DEFAULT, DISABLED, CHECKED;
- FROM mtFonts IMPORT ErrNoFonts, ErrNoGdos, ErrLessMem, ErrWorkstation,
- LoadFonts, UnloadFonts, FFIRST, FNEXT, FPREV,
- FLAST, FontList, tFontinfo, FontInfo, FontActive,
- FontSelect, FontSize, FontDefsize, NextBigger,
- NextSmaller, FontColor, FontEffekt, FontRotate,
- FontWidth, FontSkew, FontExtent, FontError;
-
- IMPORT MagicTypes, MagicAES, MagicVDI, MagicDOS, MagicBIOS,
- MagicSys, mtAppl, mtDials, mtUtils, mtFonts, mtRsc;
-
- (*----------------------------------------------------------------------*
- * Resource-Coder 1.03 (C)92 by Peter Hellinger Software *
- *----------------------------------------------------------------------*
- * Inline-Resource erzeugt am 02.02.1992 20:16:50 *
- *----------------------------------------------------------------------*)
-
- TYPE tRscData = ARRAY [0..684] OF CARDINAL;
-
- CONST RscData = tRscData {
- 00001H, 00188H, 0016CH, 00188H, 0016CH, 0016CH, 00024H,
- 0016CH, 0016CH, 00548H, 00028H, 00003H, 00001H, 00000H,
- 00000H, 00000H, 00000H, 00554H, 03031H, 03233H, 03435H,
- 03637H, 03839H, 03031H, 03233H, 03435H, 03637H, 03839H,
- 03031H, 03233H, 03435H, 03637H, 03839H, 03031H, 03233H,
- 03435H, 03637H, 03839H, 03031H, 03200H, 03031H, 03233H,
- 03435H, 03637H, 03839H, 03031H, 03233H, 03435H, 03637H,
- 03839H, 03031H, 03233H, 03435H, 03637H, 03839H, 03031H,
- 03200H, 07072H, 06F70H, 06F72H, 07469H, 06F6EH, 0616CH,
- 0005BH, 04772H, 0949EH, 0653AH, 00030H, 03132H, 03334H,
- 0005BH, 06665H, 07474H, 0005BH, 06865H, 06C6CH, 0005BH,
- 06B75H, 07273H, 06976H, 0005BH, 0756EH, 07465H, 07273H,
- 07472H, 06963H, 06865H, 06E00H, 0756DH, 05B72H, 0616EH,
- 06465H, 07400H, 05B42H, 07265H, 06974H, 0653AH, 00030H,
- 03132H, 03334H, 00030H, 03132H, 03334H, 0005BH, 04E65H,
- 06967H, 0756EH, 0673AH, 0005BH, 04F6BH, 0005BH, 04162H,
- 06272H, 07563H, 06800H, 03031H, 03233H, 03435H, 03637H,
- 03839H, 03031H, 03233H, 03435H, 03637H, 03839H, 03031H,
- 03233H, 03435H, 03600H, 02D39H, 03939H, 03900H, 05765H,
- 07274H, 03A20H, 05F5FH, 05F5FH, 05F00H, 03939H, 03939H,
- 03900H, 0205BH, 04162H, 06272H, 07563H, 06820H, 0005BH,
- 04F6BH, 00046H, 06F6EH, 07461H, 07573H, 07761H, 0686CH,
- 00047H, 07294H, 09E65H, 02065H, 0696EH, 07374H, 0656CH,
- 06C65H, 06E00H, 04272H, 06569H, 07465H, 02065H, 0696EH,
- 07374H, 0656CH, 06C65H, 06E00H, 04E65H, 06967H, 0756EH,
- 06720H, 06569H, 06E73H, 07465H, 06C6CH, 0656EH, 000FFH,
- 00000H, 00102H, 00000H, 00108H, 00000H, 00114H, 00003H,
- 00006H, 00000H, 01180H, 00000H, 0FFFFH, 00006H, 0000CH,
- 0FFFFH, 00001H, 0001CH, 00014H, 00000H, 00010H, 00002H,
- 01100H, 00002H, 00001H, 00030H, 00812H, 00002H, 0FFFFH,
- 0FFFFH, 01119H, 00000H, 00010H, 00001H, 01100H, 0002EH,
- 00000H, 00002H, 00001H, 00003H, 0FFFFH, 0FFFFH, 0131CH,
- 00000H, 00010H, 00000H, 00024H, 00002H, 00001H, 0002BH,
- 00001H, 00004H, 0FFFFH, 0FFFFH, 00014H, 00000H, 00000H,
- 000FFH, 01100H, 00002H, 00003H, 0002BH, 00004H, 00005H,
- 0FFFFH, 0FFFFH, 0001AH, 00040H, 00000H, 00000H, 00050H,
- 00002H, 00008H, 00023H, 00001H, 00006H, 0FFFFH, 0FFFFH,
- 0001BH, 00040H, 00000H, 004FFH, 01100H, 00026H, 00008H,
- 00003H, 00001H, 00007H, 0FFFFH, 0FFFFH, 0001BH, 00040H,
- 00000H, 003FFH, 01100H, 0002AH, 00008H, 00003H, 00001H,
- 00008H, 0FFFFH, 0FFFFH, 0121AH, 00000H, 00000H, 00000H,
- 00072H, 00002H, 0000AH, 00011H, 00001H, 00009H, 0FFFFH,
- 0FFFFH, 0131CH, 00040H, 00000H, 00000H, 0007FH, 00015H,
- 0000AH, 00007H, 00001H, 0000AH, 0FFFFH, 0FFFFH, 0001AH,
- 00040H, 00000H, 00000H, 00087H, 0001FH, 0000AH, 00006H,
- 00001H, 0000BH, 0FFFFH, 0FFFFH, 0001BH, 00040H, 00000H,
- 002FFH, 01100H, 00026H, 0000AH, 00003H, 00001H, 0000CH,
- 0FFFFH, 0FFFFH, 0001BH, 00040H, 00000H, 001FFH, 01100H,
- 0002AH, 0000AH, 00003H, 00001H, 00012H, 0000DH, 00011H,
- 00014H, 00000H, 00000H, 000FFH, 00130H, 00001H, 0000CH,
- 00013H, 00805H, 0000EH, 0FFFFH, 0FFFFH, 0121AH, 00041H,
- 00000H, 00000H, 0008DH, 00001H, 00000H, 00011H, 00001H,
- 0000FH, 0FFFFH, 0FFFFH, 0121AH, 00041H, 00000H, 00000H,
- 00093H, 00001H, 00001H, 00011H, 00001H, 00010H, 0FFFFH,
- 0FFFFH, 0121AH, 00041H, 00000H, 00000H, 00099H, 00001H,
- 00002H, 00011H, 00001H, 00011H, 0FFFFH, 0FFFFH, 0121AH,
- 00041H, 00000H, 00000H, 000A1H, 00001H, 00003H, 00011H,
- 00001H, 0000CH, 0FFFFH, 0FFFFH, 0121AH, 00041H, 00000H,
- 00000H, 000B0H, 00001H, 00004H, 00011H, 00001H, 00013H,
- 0FFFFH, 0FFFFH, 0131CH, 00040H, 00000H, 00000H, 000BAH,
- 00015H, 0000CH, 00008H, 00001H, 0001AH, 00014H, 00019H,
- 00014H, 00000H, 00000H, 00000H, 01130H, 0001EH, 0000CH,
- 0000FH, 00003H, 00015H, 0FFFFH, 0FFFFH, 0001AH, 00040H,
- 00000H, 00000H, 000C3H, 00001H, 00000H, 00006H, 00001H,
- 00016H, 0FFFFH, 0FFFFH, 0001BH, 00040H, 00000H, 02DFFH,
- 01100H, 00008H, 00000H, 00003H, 00001H, 00017H, 0FFFFH,
- 0FFFFH, 0001BH, 00040H, 00000H, 02BFFH, 01100H, 0000CH,
- 00000H, 00003H, 00001H, 00018H, 0FFFFH, 0FFFFH, 0001AH,
- 00040H, 00000H, 00000H, 000C9H, 00001H, 00002H, 00006H,
- 00001H, 00019H, 0FFFFH, 0FFFFH, 0001BH, 00040H, 00000H,
- 02FFFH, 01100H, 00008H, 00002H, 00003H, 00001H, 00013H,
- 0FFFFH, 0FFFFH, 0001BH, 00040H, 00000H, 02AFFH, 01100H,
- 0000CH, 00002H, 00003H, 00001H, 0001BH, 0FFFFH, 0FFFFH,
- 0131CH, 00040H, 00000H, 00000H, 000CFH, 00015H, 0000EH,
- 00009H, 00001H, 0001CH, 0FFFFH, 0FFFFH, 0121AH, 00007H,
- 00000H, 00000H, 000D9H, 00015H, 00010H, 0000BH, 00001H,
- 00000H, 0FFFFH, 0FFFFH, 0121AH, 00425H, 00000H, 00000H,
- 000DDH, 00022H, 00010H, 0000BH, 00001H, 0FFFFH, 00001H,
- 00005H, 00014H, 00000H, 00010H, 00002H, 01100H, 00002H,
- 00001H, 00020H, 00007H, 00002H, 0FFFFH, 0FFFFH, 01119H,
- 00000H, 00010H, 00001H, 01100H, 0001EH, 00000H, 00002H,
- 00001H, 00003H, 0FFFFH, 0FFFFH, 0131CH, 00000H, 00010H,
- 00000H, 000E6H, 00002H, 00001H, 0001BH, 00001H, 00004H,
- 0FFFFH, 0FFFFH, 0001DH, 00008H, 00000H, 00000H, 0016CH,
- 0000AH, 00003H, 0000BH, 00001H, 00005H, 0FFFFH, 0FFFFH,
- 0121AH, 00405H, 00000H, 00000H, 0011AH, 00012H, 00005H,
- 0000BH, 00001H, 00000H, 0FFFFH, 0FFFFH, 0121AH, 00027H,
- 00000H, 00000H, 00125H, 00005H, 00005H, 0000BH, 00001H,
- 0FFFFH, 00001H, 00004H, 00014H, 00000H, 00000H, 000FFH,
- 01100H, 00001H, 00001H, 00017H, 00006H, 00002H, 0FFFFH,
- 0FFFFH, 0001CH, 00000H, 00000H, 00000H, 00129H, 00002H,
- 00001H, 0000BH, 00001H, 00003H, 0FFFFH, 0FFFFH, 0001CH,
- 00000H, 00000H, 00000H, 00135H, 00002H, 00002H, 00010H,
- 00001H, 00004H, 0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H,
- 00000H, 00146H, 00002H, 00003H, 00011H, 00001H, 00000H,
- 0FFFFH, 0FFFFH, 0001CH, 00020H, 00000H, 00000H, 00158H,
- 00002H, 00004H, 00012H, 00001H, 00000H, 00188H, 00000H,
- 00440H, 00000H, 004D0H, 00000H, 00000H, 00000H
- }; (* Ende RscData *)
-
-
-
- (*----------------------------------------------------------------------*)
-
-
- CONST Selector = 0; (* Formular/Dialog *)
- Titel = 2; (* STRING in Baum SELECTOR *)
- Fontfeld = 3; (* BOX in Baum SELECTOR *)
- Font = 4; (* BUTTON in Baum SELECTOR *)
- Fontdown = 5; (* BOXCHAR in Baum SELECTOR *)
- Fontup = 6; (* BOXCHAR in Baum SELECTOR *)
- Proports = 7; (* BUTTON in Baum SELECTOR *)
- Point = 8; (* STRING in Baum SELECTOR *)
- Pointstr = 9; (* BUTTON in Baum SELECTOR *)
- Pointdwn = 10; (* BOXCHAR in Baum SELECTOR *)
- Pointup = 11; (* BOXCHAR in Baum SELECTOR *)
- Effektbk = 12; (* BOX in Baum SELECTOR *)
- Fat = 13; (* BUTTON in Baum SELECTOR *)
- Light = 14; (* BUTTON in Baum SELECTOR *)
- Italic = 15; (* BUTTON in Baum SELECTOR *)
- Underlin = 16; (* BUTTON in Baum SELECTOR *)
- Outline = 17; (* BUTTON in Baum SELECTOR *)
- Size = 18; (* STRING in Baum SELECTOR *)
- Fsmbak = 19; (* BOX in Baum SELECTOR *)
- Sizestr = 20; (* BUTTON in Baum SELECTOR *)
- Sizedown = 21; (* BOXCHAR in Baum SELECTOR *)
- Sizeup = 22; (* BOXCHAR in Baum SELECTOR *)
- Skewstr = 23; (* BUTTON in Baum SELECTOR *)
- Skewdown = 24; (* BOXCHAR in Baum SELECTOR *)
- Skewup = 25; (* BOXCHAR in Baum SELECTOR *)
- Skew = 26; (* STRING in Baum SELECTOR *)
- Ok = 27; (* BUTTON in Baum SELECTOR *)
- Cancel = 28; (* BUTTON in Baum SELECTOR *)
-
- CONST Edit = 1; (* Formular/Dialog *)
- Etitel = 2; (* STRING in Baum EDIT *)
- Editfeld = 3; (* FTEXT in Baum EDIT *)
- Editcncl = 4; (* BUTTON in Baum EDIT *)
- Editok = 5; (* BUTTON in Baum EDIT *)
-
- CONST Strings = 2; (* Formular/Dialog *)
- Stitel = 1; (* STRING in Baum STRINGS *)
- Spoints = 2; (* STRING in Baum STRINGS *)
- Ssize = 3; (* STRING in Baum STRINGS *)
- Sskew = 4; (* STRING in Baum STRINGS *)
-
-
- VAR attr: ARRAY [0..9] OF sINTEGER;
- j, i, s: sINTEGER;
- b, first: BOOLEAN;
- clip, r1, r2: mtUtils.tRect;
- small: mtUtils.tRect;
- rsc: mtRsc.RESOURCE;
- selector: mtUtils.tObjcTree;
- editdial: mtUtils.tObjcTree;
- strings: mtUtils.tObjcTree;
- gdos: lCARDINAL;
- rscData: POINTER TO tRscData;
-
- VAR message: ARRAY [0..50] OF CHAR;
- namestr: ARRAY [0..40] OF CHAR;
- pointstr: ARRAY [0..6] OF CHAR;
- widthstr: ARRAY [0..6] OF CHAR;
- skewstr: ARRAY [0..6] OF CHAR;
- editfeld: ARRAY [0..10] OF CHAR;
- stitel: ARRAY [0..30] OF CHAR;
- spoints: ARRAY [0..30] OF CHAR;
- ssize: ARRAY [0..30] OF CHAR;
- sskew: ARRAY [0..30] OF CHAR;
-
- VAR old: tFontinfo; (* ID *)
- act: tFontinfo;
-
-
- PROCEDURE EditDial (REF msg: ARRAY OF CHAR; value, objekt: sINTEGER): sINTEGER;
- VAR i: sINTEGER;
- b: BOOLEAN;
- s, c: mtUtils.tRect;
- BEGIN
- mtUtils.ObjcArea (selector, objekt, s);
- mtDials.DialForm (selector, mtDials.DDISABLE, r2, r2);
- mtUtils.SetObjcString (editdial, Etitel, msg);
- IntToStr (value, 0, editfeld);
- mtUtils.SetObjcString (editdial, Editfeld, editfeld);
- mtDials.DialCenter (editdial, mtDials.CSCREEN, 0, 0, c);
- mtDials.DialForm (editdial, mtDials.DSTART, r2, r2);
- mtDials.DialForm (editdial, mtDials.DGROW, s, c);
- mtDials.DialDraw (editdial, 0, 8, c, FALSE);
- LOOP
- mtAppl.MouseArrow;
- i:= mtDials.DialDo (editdial, Editfeld);
- b:= mtUtils.DoubleClick (i);
- CASE i OF
- Editcncl: EXIT;
- |
- Editok: mtUtils.ObjcString (editdial, Editfeld, editfeld);
- value:= StrToInt (editfeld);
- EXIT;
- |
- ELSE ;
- END;
- END;
- EXCL (editdial^[i].obState, MagicAES.SELECTED);
- mtDials.DialForm (editdial, mtDials.DSHRINK, s, c);
- mtDials.DialForm (editdial, mtDials.DFINISH, r2, r2);
- mtDials.DialForm (selector, mtDials.DENABLE, r2, r2);
- RETURN value;
- END EditDial;
-
- PROCEDURE DrawFontfeld (handle: sINTEGER);
- BEGIN
- (* Fontdisplay *)
- mtDials.DialDraw (selector, Fontfeld, 0, clip, FALSE);
- mtUtils.ObjcPos (selector, Fontfeld, r1.x, r1.y);
- r1.w:= r1.x + selector^[Fontfeld].obWidth - 1;
- r1.h:= r1.y + selector^[Fontfeld].obHeight - 1;
- mtAppl.MouseOff;
- MagicVDI.SetClipping (handle, r1, TRUE);
- MagicVDI.Text (handle, r1.x + 5, r1.y + 5, 'The quick brown fox jumps over the lazy dog');
- MagicVDI.SetClipping (handle, r1, FALSE);
- mtAppl.MouseOn;
- END DrawFontfeld;
-
- PROCEDURE DrawEffects (handle: sINTEGER; seleffekt: BOOLEAN);
- VAR e: BOOLEAN;
- i: INTEGER;
- BEGIN
- IF seleffekt THEN
- FOR i:= 0 TO 4 DO
- mtUtils.SetState (selector, Fat + i, SELECTED, CastToCard (i) IN act.effect);
- mtUtils.SetState (selector, Fat + i, DISABLED, FALSE);
- END;
- e:= TRUE;
- ELSE
- IF NOT (DISABLED IN selector^[Fat].obState) THEN
- FOR i:= 0 TO 4 DO
- mtUtils.SetState (selector, Fat + i, DISABLED, TRUE);
- END;
- e:= TRUE;
- END;
- END;
- IF e THEN
- mtDials.DialDraw (selector, Effektbk, 8, clip, FALSE);
- END;
- END DrawEffects;
-
- PROCEDURE Update (handle: sINTEGER; seleffekt, draw: BOOLEAN);
- (* Dialog auf die aktuellen Werte einstellen *)
- VAR i: sINTEGER;
- e, v: BOOLEAN;
- BEGIN
- v:= FALSE; e:= FALSE;
- Assign (act.name, namestr); IntToStr (act.point, 4, pointstr);
- IF act.fsm THEN
- IntToStr (act.width, 4, widthstr);
- IntToStr (ABS (act.skew DIV 10), 4, skewstr);
- IF act.skew < 0 THEN skewstr[0]:= 'R';
- ELSIF act.skew > 0 THEN skewstr[0]:= 'L';
- END;
- IF DISABLED IN selector^[Sizestr].obState THEN
- EXCL (selector^[Sizestr ].obState, DISABLED);
- EXCL (selector^[Sizeup ].obState, DISABLED);
- EXCL (selector^[Sizedown].obState, DISABLED);
- EXCL (selector^[Skewstr ].obState, DISABLED);
- EXCL (selector^[Skewup ].obState, DISABLED);
- EXCL (selector^[Skewdown].obState, DISABLED);
- END;
- v:= TRUE;
- ELSE
- IF NOT (DISABLED IN selector^[Sizestr].obState) THEN
- Assign (' 0', widthstr);
- Assign (' 0', skewstr);
- INCL (selector^[Sizestr ].obState, DISABLED);
- INCL (selector^[Sizeup ].obState, DISABLED);
- INCL (selector^[Sizedown].obState, DISABLED);
- INCL (selector^[Skewstr ].obState, DISABLED);
- INCL (selector^[Skewup ].obState, DISABLED);
- INCL (selector^[Skewdown].obState, DISABLED);
- v:= TRUE;
- END;
- END;
- mtUtils.SetState (selector, Proports, SELECTED, NOT act.mono);
- IF draw THEN
- DrawFontfeld (handle);
- mtDials.DialDraw (selector, Font, 0, clip, FALSE);
- mtDials.DialDraw (selector, Pointstr, 0, clip, FALSE);
- mtDials.DialDraw (selector, Proports, 0, clip, FALSE);
- DrawEffects (handle, seleffekt);
- IF v THEN mtDials.DialDraw (selector, Fsmbak, 8, clip, FALSE); END;
- END;
- END Update;
-
- PROCEDURE FontSelector (handle: INTEGER; REF msg: ARRAY OF CHAR;
- seleffekt, mono: BOOLEAN;
- VAR font, point, width, skew: sINTEGER;
- VAR effekt: sBITSET): BOOLEAN;
-
- VAR selok: BOOLEAN;
- color, x: sINTEGER;
-
- PROCEDURE OtherFont (start, next: sINTEGER);
- VAR f: sINTEGER;
- inf: tFontinfo;
- BEGIN
- mtAppl.MouseBusy;
- LOOP
- f:= FontList (handle, next);
- IF f = 0 THEN f:= FontList (handle, start); END;
- FontInfo (handle, f, inf);
- IF (inf.mono AND mono) OR (NOT mono) THEN EXIT; END;
- END;
- FontSelect (handle, f, FALSE);
- FontInfo (handle, f, act);
- Update (handle, seleffekt, TRUE);
- END OtherFont;
-
- BEGIN
- selok:= FALSE;
-
- (* Erstmal aktuelle Daten feststellen *)
- FontInfo (handle, FontActive (handle), old);
- FontInfo (handle, FontActive (handle), act);
-
- color:= old.color;
- j:= MagicVDI.SetTextcolor (handle, 1);
-
- IF msg[0] # 0C THEN mtUtils.SetObjcString (selector, Titel, msg);
- ELSE mtUtils.SetObjcString (selector, Titel, 'Fontauswahl');
- END;
-
- mtAppl.StoreMouse;
-
- mtDials.DialCenter (selector, mtDials.CSCREEN, 0, 0, clip);
- mtDials.DialForm (selector, mtDials.DSTART, r2, r2);
- mtDials.DialForm (selector, mtDials.DGROW, small, clip);
- mtDials.DialDraw (selector, 0, 8, clip, FALSE);
- (* Wir knnen erst jetzt den Dialog aktualisieren! *)
- Update (handle, seleffekt, FALSE);
- DrawFontfeld (handle);
-
- LOOP
- mtAppl.MouseArrow;
- i:= mtDials.DialDo (selector, -1);
- b:= mtUtils.DoubleClick (i);
- CASE i OF
- Fontup: OtherFont (FFIRST, FNEXT);
- |
- Fontdown: OtherFont (FLAST, FPREV);
- |
- Fat,
- Italic,
- Underlin,
- Light,
- Outline: IF seleffekt THEN
- x:= i - Fat;
- IF (CastToCard (x) IN act.effect) THEN
- EXCL (act.effect, i - Fat);
- ELSE
- INCL (act.effect, i - Fat);
- END;
- FontEffekt (handle, act.effect);
- FontInfo (handle, FontActive (handle), act);
- DrawFontfeld (handle);
- END;
- |
- Point,
- Pointstr,
- Pointup,
- Pointdwn: CASE i OF
- Pointdwn: j:= NextSmaller (handle);|
- Pointup: j:= NextBigger (handle);|
- ELSE j:= act.point;
- act.point:= EditDial ('Gre einstellen', act.point, Pointstr);
- IF j # act.point THEN
- act.point:= FontSize (handle, act.point, j, j, j, j);
- END;
- END;
- IF j # act.point THEN
- FontInfo (handle, FontActive (handle), act);
- Update (handle, seleffekt, FALSE);
- DrawFontfeld (handle);
- mtDials.DialDraw (selector, Pointstr, 0, clip, FALSE);
- END;
- |
- Size,
- Sizestr,
- Sizedown,
- Sizeup: IF act.fsm THEN
- CASE i OF
- Sizeup: INC (act.width);|
- Sizedown: DEC (act.width);|
- ELSE act.width:= EditDial ('Breite einstellen', act.width, Sizestr);
- END;
- FontWidth (handle, act.width);
- FontInfo (handle, FontActive (handle), act);
- Update (handle, seleffekt, FALSE);
- DrawFontfeld (handle);
- mtDials.DialDraw (selector, Sizestr, 0, clip, FALSE);
- END;
- |
- Skew,
- Skewstr,
- Skewup,
- Skewdown: IF act.fsm THEN
- CASE i OF
- Skewup: IF act.skew > -900 THEN DEC (act.skew, 10); END;|
- Skewdown: IF act.skew < 900 THEN INC (act.skew, 10); END;|
- ELSE act.skew:= EditDial ('Neigung einstellen', act.skew DIV 10, Skewstr) * 10;
- IF act.skew > 900 THEN act.skew:= 900; END;
- IF act.skew < -900 THEN act.skew:= -900; END;
- END;
- FontSkew (handle, act.skew);
- FontInfo (handle, FontActive (handle), act);
- Update (handle, seleffekt, FALSE);
- DrawFontfeld (handle);
- mtDials.DialDraw (selector, Skewstr, 0, clip, FALSE);
- END;
- |
- Cancel, Ok: mtUtils.ExclState (selector, i, SELECTED);
- selok:= i = Ok;
- EXIT;
- |
- ELSE ;
- END; (* CASE *)
- END; (* LOOP *)
- mtDials.DialForm (selector, mtDials.DSHRINK, small, clip);
- mtDials.DialForm (selector, mtDials.DFINISH, r2, r2);
- mtAppl.RestoreMouse;
-
- IF selok THEN
- font:= act.id;
- point:= act.point;
- width:= act.width;
- skew:= act.skew;
- effekt:= act.effect;
- ELSE
- font:= old.id;
- point:= old.point;
- width:= old.width;
- skew:= old.skew;
- effekt:= old.effect;
- END;
- j:= MagicVDI.SetTextcolor (handle, old.color);
-
- RETURN selok;
- END FontSelector;
-
- BEGIN
- small.x:= (MaxWidth DIV 2) - (BoxWidth DIV 2);
- small.y:= (MaxHeight DIV 2) - (BoxHeight DIV 2);
- small.w:= BoxWidth; small.h:= BoxHeight;
-
- (* Modulinterne Resource laden *)
-
- (* Erstmal Speicher fr Ressource dafr allozieren *)
- ALLOCATE (rscData, TSIZE (tRscData));
- IF rscData = NIL THEN HALT END; (* Kein Speicher fr interne Ressource *)
- (* Jetzt Resourcedaten kopieren *)
- rscData^ := RscData;
- (* Und jetzt relozieren *)
- IF mtRsc.RelocRsc (rscData, rsc) THEN
-
- (* Selector initialisieren *)
- selector:= mtRsc.GaddrRsc (rsc, MagicAES.RTREE, Selector);
- b:= mtDials.NewDial (selector);
-
- (* Pfeil links, vorhergehender Font*)
- mtDials.SetUserkey (selector, Fontdown, 75, {}, FALSE, TRUE);
-
- (* Pfeil rechts, nachfolgender Font *)
- mtDials.SetUserkey (selector, Fontup, 77, {}, FALSE, TRUE);
-
- (* Pfeil runter, verkleinern *)
- mtDials.SetUserkey (selector, Pointdwn, 80, {}, FALSE, TRUE);
-
- (* Pfeil hoch, vergrern *)
- mtDials.SetUserkey (selector, Pointup, 72, {}, FALSE, TRUE);
-
- (* Minus, Schmler *)
- mtDials.SetUserkey (selector, Sizedown, 74, {}, FALSE, TRUE); (* Ziffernblock *)
- mtDials.SetUserkey (selector, Sizedown, 53, {}, FALSE, TRUE);
-
- (* Plus, Breiter *)
- mtDials.SetUserkey (selector, Sizeup, 78, {}, FALSE, TRUE); (* Ziffernblock *)
- mtDials.SetUserkey (selector, Sizeup, 27, {}, FALSE, TRUE);
-
- (* Slash, Neigung nach links *)
- mtDials.SetUserkey (selector, Skewdown, 101, {}, FALSE, TRUE); (* Ziffernblock *)
- mtDials.SetUserkey (selector, Skewdown, 8, {Bit0}, FALSE, TRUE);
-
- (* Stern, Neigung nach rechts *)
- mtDials.SetUserkey (selector, Skewup, 102, {}, FALSE, TRUE); (* Ziffernblock *)
- mtDials.SetUserkey (selector, Skewup, 27, {Bit0}, FALSE, TRUE);
-
- mtUtils.SetObjcStringAdr (selector, Font, ADR (namestr));
- mtUtils.SetObjcStringAdr (selector, Pointstr, ADR (pointstr));
- mtUtils.SetObjcStringAdr (selector, Sizestr, ADR (widthstr));
- mtUtils.SetObjcStringAdr (selector, Skewstr, ADR (skewstr));
-
- editdial:= mtRsc.GaddrRsc (rsc, MagicAES.RTREE, Edit);
- b:= mtDials.NewDial (editdial);
-
- strings:= mtRsc.GaddrRsc (rsc, MagicAES.RTREE, Strings);
- mtUtils.ObjcString (strings, Stitel, stitel);
- mtUtils.ObjcString (strings, Spoints, spoints);
- mtUtils.ObjcString (strings, Ssize, ssize);
- mtUtils.ObjcString (strings, Sskew, sskew);
-
- ELSE
- HALT; (* Resource laden fehlgeschlagen! Bser Fehler!!! *)
- END;
- END mtFontselector.
-